/**
 * 3）类型投影
 *
 *
 */



object ClassApp03 extends App {

  class A {
    class B {}
    def foo(b:B) = println(b)

    // 使用 A##B 类型投影表示
    def foo2(b:A#B) = println(b)
  }

  val a1 = new A
  val a2 = new A
  val b1 = new a1.B
  val b2 = new a2.B

  a1.foo(b1)
//  a1.foo(b2) // 和 Java不一样，会产生编译错误
  a1.foo2(b2) // 使用类型投影是OK的

}